/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Entidades_Persistencia;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author erikasv
 */
@Entity
@Table(name = "evaluacion_proyecto")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "EvaluacionProyecto.findAll", query = "SELECT e FROM EvaluacionProyecto e"),
    @NamedQuery(name = "EvaluacionProyecto.findByCodigoInterno", query = "SELECT e FROM EvaluacionProyecto e WHERE e.codigoInterno = :codigoInterno"),
    @NamedQuery(name = "EvaluacionProyecto.findByDocumentacionCompleta", query = "SELECT e FROM EvaluacionProyecto e WHERE e.documentacionCompleta = :documentacionCompleta"),
    @NamedQuery(name = "EvaluacionProyecto.findByObjetivosCompania", query = "SELECT e FROM EvaluacionProyecto e WHERE e.objetivosCompania = :objetivosCompania"),
    @NamedQuery(name = "EvaluacionProyecto.findByPresupuestoObjetivosProyecto", query = "SELECT e FROM EvaluacionProyecto e WHERE e.presupuestoObjetivosProyecto = :presupuestoObjetivosProyecto"),
    @NamedQuery(name = "EvaluacionProyecto.findByDuracionAdecuada", query = "SELECT e FROM EvaluacionProyecto e WHERE e.duracionAdecuada = :duracionAdecuada"),
    @NamedQuery(name = "EvaluacionProyecto.findByRentabilidadObjetivosCompania", query = "SELECT e FROM EvaluacionProyecto e WHERE e.rentabilidadObjetivosCompania = :rentabilidadObjetivosCompania"),
    @NamedQuery(name = "EvaluacionProyecto.findByViableFinancieramente", query = "SELECT e FROM EvaluacionProyecto e WHERE e.viableFinancieramente = :viableFinancieramente"),
    @NamedQuery(name = "EvaluacionProyecto.findByPlanDeRiesgos", query = "SELECT e FROM EvaluacionProyecto e WHERE e.planDeRiesgos = :planDeRiesgos"),
    @NamedQuery(name = "EvaluacionProyecto.findByCronogramaAdecuado", query = "SELECT e FROM EvaluacionProyecto e WHERE e.cronogramaAdecuado = :cronogramaAdecuado"),
    @NamedQuery(name = "EvaluacionProyecto.findByViableTecnicamente", query = "SELECT e FROM EvaluacionProyecto e WHERE e.viableTecnicamente = :viableTecnicamente"),
    @NamedQuery(name = "EvaluacionProyecto.findBySeRecomienda", query = "SELECT e FROM EvaluacionProyecto e WHERE e.seRecomienda = :seRecomienda"),
    @NamedQuery(name = "EvaluacionProyecto.findByObservaciones", query = "SELECT e FROM EvaluacionProyecto e WHERE e.observaciones = :observaciones"),
    @NamedQuery(name = "EvaluacionProyecto.findByEvaluado", query = "SELECT e FROM EvaluacionProyecto e WHERE e.evaluado = :evaluado"),
    @NamedQuery(name = "EvaluacionProyecto.findByTiempoLimite", query = "SELECT e FROM EvaluacionProyecto e WHERE e.tiempoLimite = :tiempoLimite")})
public class EvaluacionProyecto implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Basic(optional = false)
//    @NotNull
    @Column(name = "codigo_interno")
    private Integer codigoInterno;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Basic(optional = false)
    @NotNull
    @Column(name = "documentacion_completa")
    private BigDecimal documentacionCompleta;
    @Basic(optional = false)
    @NotNull
    @Column(name = "objetivos_compania")
    private BigDecimal objetivosCompania;
    @Basic(optional = false)
    @NotNull
    @Column(name = "presupuesto_objetivos_proyecto")
    private BigDecimal presupuestoObjetivosProyecto;
    @Basic(optional = false)
    @NotNull
    @Column(name = "duracion_adecuada")
    private BigDecimal duracionAdecuada;
    @Basic(optional = false)
    @NotNull
    @Column(name = "rentabilidad_objetivos_compania")
    private BigDecimal rentabilidadObjetivosCompania;
    @Basic(optional = false)
    @NotNull
    @Column(name = "viable_financieramente")
    private BigDecimal viableFinancieramente;
    @Basic(optional = false)
    @NotNull
    @Column(name = "plan_de_riesgos")
    private BigDecimal planDeRiesgos;
    @Basic(optional = false)
    @NotNull
    @Column(name = "cronograma_adecuado")
    private BigDecimal cronogramaAdecuado;
    @Basic(optional = false)
    @NotNull
    @Column(name = "viable_tecnicamente")
    private BigDecimal viableTecnicamente;
    @Basic(optional = false)
    @NotNull
    @Column(name = "se_recomienda")
    private BigDecimal seRecomienda;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 2147483647)
    @Column(name = "observaciones")
    private String observaciones;
    @Basic(optional = false)
    @NotNull
    @Column(name = "evaluado")
    private boolean evaluado;
    @Basic(optional = false)
    @NotNull
    @Column(name = "tiempo_limite")
    @Temporal(TemporalType.DATE)
    private Date tiempoLimite;
    @JoinColumn(name = "codigo_proyecto", referencedColumnName = "codigo")
    @ManyToOne(optional = false)
    private Proyecto codigoProyecto;
    @JoinColumn(name = "codigo_evaluador", referencedColumnName = "codigo")
    @ManyToOne(optional = false)
    private Evaluador codigoEvaluador;

    public EvaluacionProyecto() {
    }

    public EvaluacionProyecto(Integer codigoInterno) {
        this.codigoInterno = codigoInterno;
    }

    public EvaluacionProyecto(Integer codigoInterno, BigDecimal documentacionCompleta, BigDecimal objetivosCompania, BigDecimal presupuestoObjetivosProyecto, BigDecimal duracionAdecuada, BigDecimal rentabilidadObjetivosCompania, BigDecimal viableFinancieramente, BigDecimal planDeRiesgos, BigDecimal cronogramaAdecuado, BigDecimal viableTecnicamente, BigDecimal seRecomienda, String observaciones, boolean evaluado, Date tiempoLimite) {
        this.codigoInterno = codigoInterno;
        this.documentacionCompleta = documentacionCompleta;
        this.objetivosCompania = objetivosCompania;
        this.presupuestoObjetivosProyecto = presupuestoObjetivosProyecto;
        this.duracionAdecuada = duracionAdecuada;
        this.rentabilidadObjetivosCompania = rentabilidadObjetivosCompania;
        this.viableFinancieramente = viableFinancieramente;
        this.planDeRiesgos = planDeRiesgos;
        this.cronogramaAdecuado = cronogramaAdecuado;
        this.viableTecnicamente = viableTecnicamente;
        this.seRecomienda = seRecomienda;
        this.observaciones = observaciones;
        this.evaluado = evaluado;
        this.tiempoLimite = tiempoLimite;
    }

    public Integer getCodigoInterno() {
        return codigoInterno;
    }

    public void setCodigoInterno(Integer codigoInterno) {
        this.codigoInterno = codigoInterno;
    }

    public BigDecimal getDocumentacionCompleta() {
        return documentacionCompleta;
    }

    public void setDocumentacionCompleta(BigDecimal documentacionCompleta) {
        this.documentacionCompleta = documentacionCompleta;
    }

    public BigDecimal getObjetivosCompania() {
        return objetivosCompania;
    }

    public void setObjetivosCompania(BigDecimal objetivosCompania) {
        this.objetivosCompania = objetivosCompania;
    }

    public BigDecimal getPresupuestoObjetivosProyecto() {
        return presupuestoObjetivosProyecto;
    }

    public void setPresupuestoObjetivosProyecto(BigDecimal presupuestoObjetivosProyecto) {
        this.presupuestoObjetivosProyecto = presupuestoObjetivosProyecto;
    }

    public BigDecimal getDuracionAdecuada() {
        return duracionAdecuada;
    }

    public void setDuracionAdecuada(BigDecimal duracionAdecuada) {
        this.duracionAdecuada = duracionAdecuada;
    }

    public BigDecimal getRentabilidadObjetivosCompania() {
        return rentabilidadObjetivosCompania;
    }

    public void setRentabilidadObjetivosCompania(BigDecimal rentabilidadObjetivosCompania) {
        this.rentabilidadObjetivosCompania = rentabilidadObjetivosCompania;
    }

    public BigDecimal getViableFinancieramente() {
        return viableFinancieramente;
    }

    public void setViableFinancieramente(BigDecimal viableFinancieramente) {
        this.viableFinancieramente = viableFinancieramente;
    }

    public BigDecimal getPlanDeRiesgos() {
        return planDeRiesgos;
    }

    public void setPlanDeRiesgos(BigDecimal planDeRiesgos) {
        this.planDeRiesgos = planDeRiesgos;
    }

    public BigDecimal getCronogramaAdecuado() {
        return cronogramaAdecuado;
    }

    public void setCronogramaAdecuado(BigDecimal cronogramaAdecuado) {
        this.cronogramaAdecuado = cronogramaAdecuado;
    }

    public BigDecimal getViableTecnicamente() {
        return viableTecnicamente;
    }

    public void setViableTecnicamente(BigDecimal viableTecnicamente) {
        this.viableTecnicamente = viableTecnicamente;
    }

    public BigDecimal getSeRecomienda() {
        return seRecomienda;
    }

    public void setSeRecomienda(BigDecimal seRecomienda) {
        this.seRecomienda = seRecomienda;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public boolean getEvaluado() {
        return evaluado;
    }

    public void setEvaluado(boolean evaluado) {
        this.evaluado = evaluado;
    }

    public Date getTiempoLimite() {
        return tiempoLimite;
    }

    public void setTiempoLimite(Date tiempoLimite) {
        this.tiempoLimite = tiempoLimite;
    }

    public Proyecto getCodigoProyecto() {
        return codigoProyecto;
    }

    public void setCodigoProyecto(Proyecto codigoProyecto) {
        this.codigoProyecto = codigoProyecto;
    }

    public Evaluador getCodigoEvaluador() {
        return codigoEvaluador;
    }

    public void setCodigoEvaluador(Evaluador codigoEvaluador) {
        this.codigoEvaluador = codigoEvaluador;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codigoInterno != null ? codigoInterno.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof EvaluacionProyecto)) {
            return false;
        }
        EvaluacionProyecto other = (EvaluacionProyecto) object;
        if ((this.codigoInterno == null && other.codigoInterno != null) || (this.codigoInterno != null && !this.codigoInterno.equals(other.codigoInterno))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Entidades_Persistencia.EvaluacionProyecto[ codigoInterno=" + codigoInterno + " ]";
    }
    
}
